package com.liam.chinesevietnamesecorpus.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.liam.chinesevietnamesecorpus.dto.BatchUploadResultDTO;
import com.liam.chinesevietnamesecorpus.dto.CorpusItemDTO;
import com.liam.chinesevietnamesecorpus.dto.CorpusItemUpdateDTO;
import com.liam.chinesevietnamesecorpus.vo.CorpusItemVO;
import org.springframework.web.multipart.MultipartFile;

/**
 * 语料服务接口
 * 
 * @author Liam
 */
public interface CorpusItemService {

    /**
     * 创建语料
     * 
     * @param corpusItemDTO 语料信息
     * @return 语料信息
     */
    CorpusItemVO createCorpusItem(CorpusItemDTO corpusItemDTO);

    /**
     * 根据ID查询语料信息
     * 
     * @param id 语料ID
     * @return 语料信息
     */
    CorpusItemVO getCorpusItemById(Long id);

    /**
     * 更新语料信息
     * 
     * @param id 语料ID
     * @param corpusItemUpdateDTO 更新信息
     * @return 更新后的语料信息
     */
    CorpusItemVO updateCorpusItem(Long id, CorpusItemUpdateDTO corpusItemUpdateDTO);

    /**
     * 删除语料
     * 
     * @param id 语料ID
     */
    void deleteCorpusItem(Long id);

    /**
     * 分页查询语料列表
     * 
     * @param page 页码
     * @param size 每页大小
     * @param libraryId 语料库ID
     * @param keyword 搜索关键词
     * @return 语料列表
     */
    IPage<CorpusItemVO> getCorpusItemList(int page, int size, Long libraryId, String keyword, String sourceText, String targetText);

    /**
     * 批量上传语料
     * 
     * @param file Excel文件
     * @param libraryId 语料库ID
     * @param hasIndexColumn 是否包含序号列
     * @return 批量上传结果
     */
    BatchUploadResultDTO batchUploadCorpusItems(MultipartFile file, Long libraryId, Boolean hasIndexColumn);
}
